// 微信公众号辅助库
import wx from 'weixin-js-sdk';

const sxf_theater = uniCloud.importObject("sxf-theater");

export const wxGzh = wx;

/**
 * 隐藏的菜单项
 */
const HIDE_MENU_LIST = [
	"menuItem:copyUrl",
	"menuItem:openWithQQBrowser",
	"menuItem:openWithSafari",
	"menuItem:originPage",
	"menuItem:share:QZone",
	"menuItem:share:brand",
	"menuItem:share:email",
	"menuItem:share:facebook",
	"menuItem:share:qq",
	"menuItem:share:weiboApp",
];

/**
 * 隐藏的菜单项
 */
const HIDE_ALL_MENU_LIST = [
	"menuItem:copyUrl",
	"menuItem:openWithQQBrowser",
	"menuItem:openWithSafari",
	"menuItem:originPage",
	"menuItem:share:QZone",
	"menuItem:share:brand",
	"menuItem:share:email",
	"menuItem:share:facebook",
	"menuItem:share:qq",
	"menuItem:share:weiboApp",
	"menuItem:share:appMessage", 
	"menuItem:share:timeline",
];

/**
 * 公众号分享
 * @param { options } 参数：{ isShowMenu: true/false, shareInfo: { title: "", desc: "", link: "", imgUrl: "" } }
 */
export const gzhShare = async (option) => {
	// #ifdef MP-WEIXIN
	// 如果是微信小程序
	if (option.isShowMenu) {
		try {
			// 显示所有菜单
			uni.showShareMenu({
				  withShareTicket: true,
				  menus: ['shareAppMessage']//开启转发好友和转发朋友圈按钮
			});
		} catch(ex) {
			console.error("catch1:", ex);
		}
	} else {
		try {
			// 隐藏所有非基础菜单
			uni.hideShareMenu();
		} catch(ex) {
			console.error(ex);
		}
	}
	// #endif
	
	
	// #ifndef MP-WEIXIN
	// 如果不是微信小程序
	let configRes = getApp().globalData.gzhConfig;
	if (configRes === undefined || 
		configRes == null || 
		configRes.signature === undefined || 
		configRes.signature.length == 0) {
		// 没有config，获取
		const pageUrl = window.location.href.split("#")[0];
		configRes = await sxf_theater.getWxGzhConfig({ url: pageUrl });
		getApp().globalData.gzhConfig = configRes;
		console.log("没有config，获取------config configRes:", configRes);
	} else {
		// 已有config，不重复获取
		console.log("已有config，不重复获取------config configRes:", configRes);
	}
	
	wx.config({
		debug: false,
		appId: configRes.appId,
		timestamp: configRes.timestamp,
		nonceStr: configRes.nonceStr,
		signature: configRes.signature,
		jsApiList: [
			// "onMenuShareTimeline",
			// "onMenuShareAppMessage",
			"updateTimelineShareData",
			"updateAppMessageShareData",
			// "hideOptionMenu",
			// "showOptionMenu",
			"hideMenuItems",
			"showMenuItems",
			"hideAllNonBaseMenuItem",
			"showAllNonBaseMenuItem",
			"previewImage",
		]
	});
	console.log("------config wx.config");
	
	setTimeout(() => {
		try {
			wx.ready(() => {
				console.log("------config wx.ready");
				wx.checkJsApi({
					jsApiList: [
						"updateTimelineShareData",
						"updateAppMessageShareData",
					],
					success: function(res) {
						console.log("checkJsApi res:", res);
					},
					fail: function(err) {
						console.error("checkJsApi err:", err);
					}
				});
				
				if (option.isShowMenu) {
					try {
						// 显示所有菜单
						wx.showAllNonBaseMenuItem();
						// 隐藏掉不需要的菜单
						wx.hideMenuItems({
							menuList: HIDE_MENU_LIST
						});
					} catch(ex) {
						console.error("catch1:", ex);
					}
					
					if (option.shareInfo !== undefined && 
						option.shareInfo != null && 
						option.shareInfo.title !== undefined && 
						option.shareInfo.title != null && 
						option.shareInfo.title.length > 0) {
						try {
							// if (wx.onMenuShareAppMessage) {
							// 	// 支持旧分享方式的（旧版本的微信），使用旧的分享方式
							// 	// 分享给好友
							// 	shareTimeline(option.shareInfo);
							// 	// 分享到朋友圈
							// 	shareTimeline(option.shareInfo);
							// } else {
							// 	// 不支持旧分享方式的（新版本的微信），使用新的分享方式
							// 	// 自定义分享给朋友的分享内容
							// 	updateShareFriend(option.shareInfo);
							// 	// 自定义分享朋友圈的分享内容
							// 	updateShareTimeline(option.shareInfo);
							// }
							
							// 自定义分享给朋友的分享内容
							updateShareFriend(option.shareInfo);
							// 自定义分享朋友圈的分享内容
							updateShareTimeline(option.shareInfo);
						} catch(ex) {
							console.error("catch2:", ex);
						}
					}
				} else {
					try {
						// 隐藏所有非基础菜单
						wx.hideAllNonBaseMenuItem();
						// 隐藏掉不需要的菜单
						wx.hideMenuItems({
							menuList: HIDE_ALL_MENU_LIST
						});
					} catch(ex) {
						console.error(ex);
					}
				}
			});
			
			wx.error((err) => {
				console.log("------config wx.error:", err);
				uni.showToast({
					title: "分享配置失败",
					icon: "none"
				});
			});
		} catch(ex) {
			console.error("catch:", ex);
		}
	}, 300);
	// #endif
};

/**
 * 分享给好友
 */
export const shareFriend = (option) => {
	// 分享给好友
	console.log("shareFriend:", option);
	wx.onMenuShareAppMessage({
		title: option.title,
		desc: option.desc,
		link: option.link,
		imgUrl: option.imgUrl,
		success: function () {
			// 分享成功
			// uni.showToast({
			// 	title: "分享成功"
			// });
			console.log("onMenuShareAppMessage 设置成功");
		},
		cancel: function() {
			// 取消分享
			// uni.showToast({
			// 	title: "您已取消分享",
			// 	icon: "none"
			// });
			console.log("onMenuShareAppMessage 取消设置");
		},
		fail: function(err) {
			console.error("onMenuShareAppMessage 设置失败：", err);
		}
	});
};

/**
 * 分享到朋友圈
 */
export const shareTimeline = (option) => {
	// 分享到朋友圈
	console.log("shareTimeline:", option);
	wx.onMenuShareTimeline({
		title: option.title,
		link: option.link,
		imgUrl: option.imgUrl,
		success: function() {
			// 分享成功
			// uni.showToast({
			// 	title: "分享成功"
			// });
			console.log("onMenuShareTimeline 设置成功");
		},
		cancel: function() {
			// 取消分享
			// uni.showToast({
			// 	title: "您已取消分享",
			// 	icon: "none"
			// });
			console.log("onMenuShareTimeline 取消设置");
		},
		fail: function(err) {
			console.error("onMenuShareTimeline 设置失败：", err);
		}
	});
};

/**
 * 更新分享给好友内容
 */
export const updateShareFriend = (option) => {
	// 自定义分享给朋友的分享内容
	console.log("updateShareFriend:", option);
	wx.updateAppMessageShareData({
		title: option.title,
		desc: option.desc,
		link: option.link,
		imgUrl: option.imgUrl,
		success: function() {
			// 分享成功
			// uni.showToast({
			// 	title: "分享成功"
			// });
			console.log("updateAppMessageShareData 设置成功");
		},
		cancel: function() {
			// 取消分享
			// uni.showToast({
			// 	title: "您已取消分享",
			// 	icon: "none"
			// });
			console.log("updateAppMessageShareData 取消设置");
		},
		fail: function(err) {
			console.error("updateAppMessageShareData 设置失败：", err);
		}
	});
};

/**
 * 更新分享到朋友圈内容
 */
export const updateShareTimeline = (option) => {
	// 自定义分享朋友圈的分享内容
	console.log("updateShareTimeline:", option);
	wx.updateTimelineShareData({
		title: option.title,
		link: option.link,
		imgUrl: option.imgUrl,
		success: function() {
			// 分享成功
			// uni.showToast({
			// 	title: "分享成功"
			// });
			console.log("updateShareTimeline 设置成功");
		},
		cancel: function() {
			// 取消分享
			// uni.showToast({
			// 	title: "您已取消分享",
			// 	icon: "none"
			// });
			console.log("updateTimelineShareData 取消设置");
		},
		fail: function(err) {
			console.error("updateTimelineShareData 设置失败：", err);
		}
	});
};

/**
 * 预览图片
 */
export const previewImage = (current, urls) => {
	// #ifdef MP-WEIXIN
	// 如果是小程序
	console.log("-----小程序 previewImage");
	uni.previewImage({
		current: current,
		urls: urls || [current]
	});
	// #endif
	
	// #ifndef MP-WEIXIN
	// 如果不是小程序
	console.log("-----公众号 previewImage");
	wx.previewImage({
		current: current,
		urls: urls || [current]
	});
	// #endif
};


export default {
	wxGzh: wxGzh,
	gzhShare: gzhShare,
	shareFriend: shareFriend,
	shareTimeline: shareTimeline,
	updateShareFriend: updateShareFriend,
	updateShareTimeline: updateShareTimeline,
	previewImage: previewImage,
};
